Plug some memory leaks in GL support
authorMatthias Clasen <mclasen@redhat.com>
Tue, 28 Oct 2014 20:06:42 +0000 (16:06 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 28 Oct 2014 20:07:57 +0000 (16:07 -0400)
valgrind pointed these out.

gdk/x11/gdkglcontext-x11.c

index 061b15af5e21ea7efff3e0111e27429f77a2292d..12a6b8a8435410a2680993c8b07c526ec5f75722 100644 (file)
@@ -286,6 +286,7 @@ glx_pixmap_get (cairo_surface_t *surface)
   GLXFBConfig *fbconfigs;
   int nfbconfigs;
   XVisualInfo *visinfo;
+  VisualID visualid;
   int i, value;
   gboolean y_inverted;
   gboolean with_alpha;
@@ -304,7 +305,13 @@ glx_pixmap_get (cairo_surface_t *surface)
   for (i = 0; i < nfbconfigs; i++)
     {
       visinfo = glXGetVisualFromFBConfig (display, fbconfigs[i]);
-      if (!visinfo || visinfo->visualid != XVisualIDFromVisual (visual))
+      if (!visinfo)
+        continue;
+
+      visualid = visinfo->visualid;
+      XFree (visinfo);
+
+      if (visualid != XVisualIDFromVisual (visual))
         continue;
 
       glXGetFBConfigAttrib (display, fbconfigs[i], GLX_DRAWABLE_TYPE, &value);
@@ -338,6 +345,7 @@ glx_pixmap_get (cairo_surface_t *surface)
                                 &value);
           if (!value)
             continue;
+
           format = GLX_TEXTURE_FORMAT_RGBA_EXT;
         }
 
@@ -350,6 +358,8 @@ glx_pixmap_get (cairo_surface_t *surface)
       break;
     }
 
+  XFree (fbconfigs);
+
   if (i == nfbconfigs)
     return NULL;